package org.huawei260.TiKu.ODsuanfa;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @Author: qingle
 * @Date: 2024/10/28-16:11
 * @Description: 2544 【模拟】2024E水仙花数
 *
 * 所谓水仙花数，是指一个n位的正整数，其各位数字的n次方和等于该数本身。
 * 例如153是水仙花数，153是一个3位数，并且153=1^3+5^3+3^3。
 * 输入格式
 * 第一行输入一个整数n，表示一个n位的正整数。n在3到7之间，包含3和7。
 * 第二行输入一个整数m，表示需要返回第m个水仙花数。
 * 输出格式
 * 返回长度是n的第m个水仙花数。个数从0开始编号。
 * 若m大于水仙花数的个数，返回最后一个水仙花数和m的乘积。
 * 若输入不合法，返回-1。
 * 输入样例    复制
 * 3
 * 0
 * 输出样例    复制
 * 153
 * @version: 1.0
 */
public class E_2024E_2544__模拟水仙花数 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();

		if (n < 3 || n > 7) {
			System.out.println("-1");
			return;
		}

		if (m < 0) {
			System.out.println("-1");
			return;
		}

		// n位数的水仙花数个数，如n为3 表示从100道1000之间，有153个水仙花数
		int start = (int) Math.pow(10, n - 1);
		int end = (int) Math.pow(10, n);
		//结果列表用ArrayList 存储
		List<Integer> narcissusList = new ArrayList<>();
		for (int i = start; i < end; i++) {
			if(isWaterBlossomNumber(i)) {
				narcissusList.add(i);
			}
		}

		if(m >= narcissusList.size()) {
			System.out.println("-1");
			return;
		}

		int narcissusNum = narcissusList.get(m);

		System.out.println(narcissusNum);
	}

		private static boolean isWaterBlossomNumber(int num) {
			int sum = 0;
			int temp = num;
			int digits = 0;

			// 计算位数
			while (temp > 0) {
				temp /= 10;
				digits++;
			}

			temp = num;

			// 计算各位数的幂之和
			while (temp > 0) {
				int digit = temp % 10;
				sum += Math.pow(digit, digits);
				temp /= 10;
			}

			return sum == num;
		}
	}